package educar.controllers;

import educar.gui.DocenteView;
import educar.gui.IView;
import educar.models.Actividad;
import educar.models.Docente;
import educar.models.Materia;
import educar.models.Session;
import educar.models.actividadNotFound;
import educar.models.docenteNotFound;
import educar.models.materiaNotFound;

public class DocenteActividadesController implements IController
{
    private DocenteView view;
    private Docente docente;
    private Materia materiaSeleccionada;

    public DocenteActividadesController()
    {
        String dni = Session.getCurrentUser().getDniUser();
        try
        {
            docente = Docente.getDocenteByDni(dni);
        }
        catch (docenteNotFound e)
        {
            e.printStackTrace();
        }
    }

    public void setView(IView view)
    {
        this.view = (DocenteView)view;
        actualizarMaterias();
        actualizarDatosPersonales();
    }

    private void reset()
    {
        view.setACodigo("");
        view.setADescripcion("");
        view.setAMateria("");
    }

    private void actualizarMaterias()
    {
        String[] materias = docente.getMateriasAsignadasArray();
        view.setActividadesMaterias(materias);
    }

    private void actualizarActividades()
    {
        String[] actividades = Actividad.getAllByMateriasArray(materiaSeleccionada.getCodigo());
        view.setActividadesCreadas(actividades);
    }

    public void process(String model)
    {
        if (materiaSeleccionada != null)
        {
            Actividad a = new Actividad(view.getADescripcion(), materiaSeleccionada);
            if (a.save())
            {
                view.setACodigo(a.getCodigoActividad());
                actualizarActividades();
            }
            else
            {
                view.present("Error al guardar actividad");
            }
        }
    }

    //Este seria para la lista actividades
    public void processItemList(String name, String item)
    {
        if (item.compareTo("actividadesActCreadasList") == 0)
            processActividad(name);
        else if (item.compareTo("actividadesMateriasList") == 0)
            processMateria(name);
    }

    private void processMateria(String name)
    {
        try
        {
            materiaSeleccionada = Materia.getMateriabyCodigo(name);
            actualizarActividades();
            reset();
            view.setAMateria(materiaSeleccionada.getNombre());
        }
        catch (materiaNotFound e)
        {
            e.printStackTrace();
        }
    }

    private void processActividad(String name)
    {
        try
        {
            Actividad a = Actividad.getbyCodigo(name);
            view.setACodigo(a.getCodigoActividad());
            view.setADescripcion(a.getDescripcion());
            //la materia no cambia ;)
        }
        catch (actividadNotFound e)
        {
            e.printStackTrace();
        }
    }

    private void actualizarDatosPersonales()
    {
        view.setDPApellido(docente.getApellido());
        view.setDPDni(docente.getDni());
        view.setDPNombre(docente.getNombre());
    }
}